//! E-UTILS
//! # Random 工具宏
//!
//! # Exmaple `Nanoid`
//! ```no_run
//! fn main() {
//!     use e_utils::algorithm;
//!     println!("nanoid -> {}", algorithm!(nanoid));
//!     println!("nanoid 16bytes -> {}", algorithm!(nanoid 16));
//!     println!("nanoid 16bytes -> {}", algorithm!(nanoid 16));
//!     println!("nanoid 10bytes [alphabet:expr] -> {}", algorithm!(nanoid 16, &['1', 'b', 'c', '7']));
//!     println!("nanoid unsafe 10bytes -> {}", algorithm!(nanoid unsafe 10));
//!     println!("nanoid unsafe 10bytes [alphabet:expr]-> {}", algorithm!(nanoid unsafe 10, &['1','0']));
//! }
//! ```
//!
//! # Exmaple `random`
//! ```no_run
//! fn main() {
//!    use e_utils::algorithm;
//!    println!("random bool -> {}", algorithm!());
//!    println!("random type -> {}", algorithm!(#u32));
//!    println!("random type[] -> {:?}", algorithm!([u32; 10]));
//!    println!("random range 0-13 -> {}", algorithm!(13));
//!    println!("random range -> {}", algorithm!(0i32..13));
//!    println!("random rgb range -> {:?}", algorithm!(rgb 100,255));
//! }
//! ```

#![allow(
  clippy::cognitive_complexity,
  clippy::large_enum_variant,
  clippy::module_inception,
  clippy::needless_doctest_main
)]
#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)]
#![deny(unused_must_use)]
#![doc(test(no_crate_inject, attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))))]
/// Macros
#[macro_use]
#[path = "./macros.rs"]
pub mod macros;
/// Result
#[path = "./res.rs"]
pub mod res;
pub use res::*;
/// Share
pub mod share;
cfg_parse! {
  ///Parse
  pub mod parse;
  pub use parse::*;
}
cfg_dialog! {
  /// Dialog window
  pub mod dialog;
}

cfg_fs! {
  /// fs
  pub mod fs;
}
/// 算法
pub mod algorithm;

/// 系统操作
pub mod system;
pub use system::*;
cfg_images! {
  /// 图像
  pub mod images;
}

/// 构建
#[cfg(feature = "build")]
pub mod build;
